package com.jianjian.gulimall;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * 想要用nacos作为配置中心:
 *
 *1.导入依赖
 *   <dependency><!--配置中心来做配置管理 -->
 *             <groupId>com.alibaba.cloud</groupId>
 *             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
 *   </dependency>
 *
 * 2.创建一个bootstrap.properties配置文件，(优先加载)
 * #当前应用的名字
 * spring.application.name= gulimall-common
 * #指定配置中心的地址
 * spring.cloud.nacos.config.server-addr=127.0.0.1:8848
 *
 * 3.需要给配置中心默认添加一个叫 数据集(Data id) gulimall-common.properties。默认规则: 应用名(bootstrap.properties中配置的应用名).properties
 * 4.给 应用名.properties中添加配置
 * 5.动态获取配置。
 * 	refreshScope:动态获取并刷新配置（加在controller）
 * @value("${配置项的名字"}):获取到配置
 *
 * 如果配置中心和当前应用的配置(application.properties)中都配置了相同的项，优先使用配置中心的配置。
 *
 *
 * ###2细节:
 *1.命名空间:配置隔离:
 * 	默认:public(保留空间):默认新增的所有配置都在public空间
 * 	1、开发、测试、生产:利用命名空间来做环境隔离。
 * 	注意：在bootstrap.properties配置上，需要使用哪个命名空间下的配置。
 * 	#指定命名空间为 prop(生产环境)   命名空间ID
 *  spring.cloud.nacos.config.namespace=46eb5d7e-7b90-4cf0-a301-d3b4c5fc4038
 *  2、每一个微服务之间相互隔离配置，每一个微服务都创建自己的命名空间，只加载自己命名空间下的所有配置。
 *
 *2.配置集:所有配置的集合
 *  1.配置集ID: 类似于文件名
 *   Data id: 类似于文件名
 *  2.配置分组 Group:
 *  默认所有的配置集合都属于: DEFAULT_GROUP
 *  #默认的配置组是:DEFAULT_GROUP
 *  spring.cloud.nacos.config.group=DEFAULT_GROUP
 *
 *	每个微服务创建自己的命名空间，使用配置分组区分环境，dev、test、prop
 *
 *3.同时加载多个配置集
 *	1.微服务任何配置信息，任何配置文件都可以放在配置中心中。
 *	2.只需要在bootstrap.properties中说明加载配置中心中哪些配置文件即可。
 *	3.@Value 、 @ConfigurationProperties等 以前SpringBoot任何方法从配置文件中获取值，都能使用。  配置中心有的优先使用配置中心的。
 *
 */
@SpringBootApplication
//开启服务注册的客户端
@EnableDiscoveryClient
public class GulinallCouponApplication {

	public static void main(String[] args) {
		SpringApplication.run(GulinallCouponApplication.class, args);
	}

}
